import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { svgBuilder } from './src/plugins/svgBuilder';
import { resolve } from 'path'
export default defineConfig({
    plugins: [vue(), svgBuilder('./src/assets/icons/svg/')],
    publicDir: 'public', // 静态资源服务的文件夹
    base: './', // 基础路径
    assetsInclude: '', // 静态资源处理
    resolve: {
        alias: {
            // 路径别名
            '@': resolve(__dirname, 'src'),
            _store: resolve(__dirname, 'src/store/modules')
        },
        conditions: [],
        extensions: ['.ts', '.js', '.jsx', '.tsx', '.json', '.map']
    },
    //配置css
    css: {
        preprocessorOptions: {
            scss: {
                charset: false,
                additionalData: '@import "./src/styles/global.scss";' // 加载全局样式，使用less特性
            }
        }
    },
    server: {
        // 开发配置
        host: 'localhost',
        cors: true, // 跨域
        port: 8089, // 端口
        open: true,
        proxy: {
            // 接口地址
            '/api': {
                target: 'https://api.shop.eduwork.cn/',
                changeOrigin: true,
                rewrite: (path) => path.replace(/^\/api/, '')
            }
        }
    },
    build: {
        // 构建配置
        outDir: 'dist', // 输出目录
        assetsDir: 'assets', // 配置静态资源路径
        assetsInlineLimit: 4096, //小于此阈值的导入或引用资源将内联为 base64 编码，以避免额外的 http 请求。设置为 0 可以完全禁用此项
        cssCodeSplit: true, //启用/禁用 CSS 代码拆分
        sourcemap: true, //构建后是否生成 source map 文件
        manifest: false,
        // 设置为 false 可以禁用最小化混淆
        // 或是用来指定使用哪种混淆器
        // boolean | 'terser' | 'esbuild'
        // terser 构建后文件体积更小
        minify: 'terser',
        terserOptions: {
            //传递给 Terser 的更多 minify 选项
            compress: {
                // 清除log
                keep_infinity: true,
                drop_console: true,
                drop_debugger: true
            }
        },
        brotliSize: true, //启用/禁用 brotli 压缩大小报告。压缩大型输出文件可能会很慢，因此禁用该功能可能会提高大型项目的构建性能。
        chunkSizeWarningLimit: 3000 // chunk大小警告限制
    }
})
